//#include <iostream>
//using namespace std;
//
//const int M = 45;
//const int N = 360;
//
//int h[N] = { 0 };
//int f[M][M][M][M] = { 0 };
//int cnt[5] = { 0 };
//
//int n, m, sum;
//
//int main()
//{
//	cin >> n >> m;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> h[i];
//	}
//	for (int i = 1; i <= m; i++)
//	{
//		int x;
//		cin >> x;
//		cnt[x]++;
//	}
//	f[0][0][0][0] = h[0];
//
//	for (int a = 0; a <= cnt[1]; a++)
//	{
//		for (int b = 0; b <= cnt[2]; b++)
//		{
//			for (int c = 0; c <= cnt[3]; c++)
//			{
//				for (int d = 0; d <= cnt[4]; d++)
//				{
//					int j = a + b * 2 + c * 3 + d * 4;
//					if (a - 1 >= 0)
//					{
//						f[a][b][c][d] = max(f[a][b][c][d], f[a - 1][b][c][d] + h[j]);
//					}
//					if (b - 1 >= 0)
//					{
//						f[a][b][c][d] = max(f[a][b][c][d], f[a][b - 1][c][d] + h[j]);
//					}
//					if (c - 1 >= 0)
//					{
//						f[a][b][c][d] = max(f[a][b][c][d], f[a][b][c - 1][d] + h[j]);
//					}
//					if (d - 1 >= 0)
//					{
//						f[a][b][c][d] = max(f[a][b][c][d], f[a][b][c][d - 1] + h[j]);
//					}
//				}
//			}
//		}
//	}
//
//	cout << f[cnt[1]][cnt[2]][cnt[3]][cnt[4]] << endl;
//	return 0;
//}


#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <functional>
using namespace std;

const int N = 110;

long long a[N] = { 0 };
long long f[N][N] = { 0 };
char str[N];

int n;

int main()
{
	map<char, function<long long(long long, long long)>> ppp = {
		{'t', [](long long a, long long b) {return a + b; }},
		{'x', [](long long a, long long b) {return a * b; }},
	};

	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> str[i] >> a[i];
		a[i + n] = a[i];
		str[i + n] = str[i];
	}
	int m = 2 * n;

	memset(f, -0x3f, sizeof(f));
	for (int i = 1; i <= m; i++)
	{
		f[i][i] = a[i];
	}

	for (int len = 2; len <= n; len++)
	{
		for (int i = 1; i + len - 1 <= m; i++)
		{
			int j = i + len - 1;
			for (int k = i; k <= j; k++)
			{
				//[i, k]   [k + 1, j]
				if (f[i][k] == -4485090715960753727 || f[k + 1][j] == -4485090715960753727)
				{
					continue;
				}

				f[i][j] = max(f[i][j], ppp[str[k]](f[i][k], f[k + 1][j]));
			}
		}
	}

	long long ret = -0x3f3f3f3f3f3f3f3f;
	for (int i = 1; i <= n; i++)
	{
		ret = max(ret, f[i][i + n - 1]);
	}
	cout << ret << endl;

	for (int i = 1; i <= n; i++)
	{
		if (f[i][i + n - 1] == ret)
		{
			int pos = (i + n - 1) % n;
			if (n == pos)
			{
				pos = n;
			}
			cout << pos << " ";
		}
	}
	return 0;
}